#ifndef _atomic_0826_error_correction_service_H_
#define _atomic_0826_error_correction_service_H_

/*------------------------ Include Begin --------------------------*/

// C
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string>
#include <math.h>
#include <time.h>
#include <ctype.h>

// C++
#include <iostream>
#include <fstream>
#include <chrono>
#include <string>
#include <random>
#include <cmath>
#include <vector>
#include <map>
#include <set>
#include <stdbool.h>
#include <mutex>
#include <chrono>
#include <sstream>

/*------------------------  Include End  -------------------------*/

/*------------------------  Service Info Begin  --------------------------*/
/**
 *
 * @name:     atomic_0826_error_correction_service
 * @chinese_name: 误差校正服务
 * @description: 用于导航解算系统中的传感器误差校正与补偿
 * @version: V1.0.0
 * @build_time: 2025-08-26 16:00:00
 * @license: MIT
 * @service_path: atomic_0826_error_correction_service
 *
 * @resource_requirement:
 *         + cpu_architecture: x86_64
 *         + memory: 4GB
 *         + hard_disk: 50GB
 *
 * @developer:
 *      +name: twilight
 *      +email: twilight@atomic_0826_error_correction_service.com
 * @maintainer:
 *      +name: twilight
 *      +email:twilight@atomic_0826_error_correction_service.com
 * @operating_system:
 *      +name:Linux
 *      +v1:5.13.0-117-generic
 *      +v2:5.14.0-117-generic
 *      +name:SylixOS
 *      +v1:1.0.0
 *      +v2:1.0.2
 *
 *
 *
 */
/*------------------------  Service Info End  --------------------------*/

/*------------------------  Return Type Begin  --------------------------*/

#define ATOMIC_SERVICE_SUCCESS 0
#define ATOMIC_SERVICE_FAIL -1
#define ATOMIC_SERVICE_TIMEOUT -2
#define ATOMIC_SERVICE_ERROR -3
#define ATOMIC_SERVICE_NOT_SUPPORT -4
#define ATOMIC_SERVICE_NOT_READY -5
#define ATOMIC_SERVICE_NOT_INIT -6
#define ATOMIC_SERVICE_NOT_START -7
#define ATOMIC_SERVICE_NOT_STOP -8
#define ATOMIC_SERVICE_NOT_RELEASE -9
#define ATOMIC_SERVICE_NOT_DESTROY -10
#define ATOMIC_SERVICE_NOT_CREATE -11
#define ATOMIC_SERVICE_NOT_OPEN -12
#define ATOMIC_SERVICE_NOT_CLOSE -13
#define ATOMIC_SERVICE_NOT_READ -14
#define ATOMIC_SERVICE_NOT_WRITE -15
#define ATOMIC_SERVICE_NOT_SEEK -16
#define ATOMIC_SERVICE_NOT_TELL -17
#define ATOMIC_SERVICE_NOT_SIZE -18
#define ATOMIC_SERVICE_NOT_SEEK_END -19
#define ATOMIC_SERVICE_NOT_SEEK_SET -20
#define ATOMIC_SERVICE_NOT_SEEK_CUR -21
#define ATOMIC_SERVICE_NOT_SEEK_ABS -22

/*------------------------  Return Type End  --------------------------*/



/*------------------------  Message Info Begin  --------------------------*/

typedef struct
{
    int solution_valid;             // 解算结果有效性(1:有效,0:无效)
    double sol_time;                // 解算时间戳(秒)
    
    // 位置信息
    double latitude;                // 纬度(度)
    double longitude;               // 经度(度)
    float altitude;                 // 海拔(米)
    float pos_std_lat;              // 纬度方向位置标准差 (米)
    float pos_std_lon;              // 经度方向位置标准差 (米)
    float pos_std_alt;              // 海拔方向位置标准差 (米)
    
    // 速度信息
    float velocity_east;            // 东向速度 (m/s)
    float velocity_north;           // 北向速度 (m/s)
    float velocity_up;              // 天向速度 (m/s)
    float vel_std_east;             // 东向速度标准差 (m/s)
    float vel_std_north;            // 北向速度标准差 (m/s)
    float vel_std_up;               // 天向速度标准差 (m/s)
    
    // 姿态信息
    float attitude_roll;            // 横滚角 (度)
    float attitude_pitch;           // 俯仰角 (度)
    float attitude_heading;         // 航向角 (度)
    float att_std_roll;             // 横滚角标准差 (度)
    float att_std_pitch;            // 俯仰角标准差 (度)
    float att_std_heading;          // 航向角标准差 (度)
    
    int return_type;                // 服务返回类型


    int sensor_id;         // 传感器ID
    double raw_error;      // 原始误差值
    double position_x;     // X坐标位置
    double position_y;     // Y坐标位置
    double timestamp;      // 时间戳
} ErrorCorrectionInput;

typedef struct
{
    int solution_valid;             // 解算结果有效性(1:有效,0:无效)
    double sol_time;                // 解算时间戳(秒)
    
    // 位置信息
    double latitude;                // 纬度(度)
    double longitude;               // 经度(度)
    float altitude;                 // 海拔(米)
    float pos_std_lat;              // 纬度方向位置标准差 (米)
    float pos_std_lon;              // 经度方向位置标准差 (米)
    float pos_std_alt;              // 海拔方向位置标准差 (米)
    
    // 速度信息
    float velocity_east;            // 东向速度 (m/s)
    float velocity_north;           // 北向速度 (m/s)
    float velocity_up;              // 天向速度 (m/s)
    float vel_std_east;             // 东向速度标准差 (m/s)
    float vel_std_north;            // 北向速度标准差 (m/s)
    float vel_std_up;               // 天向速度标准差 (m/s)
    
    // 姿态信息
    float attitude_roll;            // 横滚角 (度)
    float attitude_pitch;           // 俯仰角 (度)
    float attitude_heading;         // 航向角 (度)
    float att_std_roll;             // 横滚角标准差 (度)
    float att_std_pitch;            // 俯仰角标准差 (度)
    float att_std_heading;          // 航向角标准差 (度)

    double corrected_error;  // 校正后误差
    double correction_factor;// 校正系数
    int confidence_level;    // 校正置信度(0-100)
    int return_type;         // 返回状态类型
} ErrorCorrectionOutput;


/*------------------------  Message Info End  --------------------------*/

/*------------------------  Interface Declaration Begin  --------------------------*/

int getErrorCorrection(ErrorCorrectionInput *input, ErrorCorrectionOutput *output);


/*------------------------  Interface Declaration End  --------------------------*/



#endif // _atomic_0826_error_correction_service_H_
